<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>哈希函数的实现</title>
</head>
<body>
    <script>
        /*
        * 设计哈希函数
        * 把字符串转换成较大的数字:hashcode
        * 将大的数字hashcode压缩到数组的范围之内
        * @prames str 要转化的字符串 max 数组的最大范围 
        */
        function hashFunc (str,size){
            // 初始化hashcode的值
            var hashcode = 0
            // 霍纳法则,来计算hashcode的值
            for (let index = 0; index < str.length; index++) {
                // 随意自定义一个质数(37)用于计算防止重复
                // charCodeAt方法是通过字符串自带的属性获取每个字的Unicode编码
                hashcode = 37 * hashcode + str.charCodeAt(index)
            }
            // 取余操作
           var  index = hashcode % size
           return index
        }

        // 测试哈希函数
        alert(hashFunc('abc',7));
        alert(hashFunc('cba',7));
        alert(hashFunc('nba',7));
        alert(hashFunc('mba',7));
    </script>
</body>
</html>